Ray tracing has become increasingly important for both offline rendering and interactive applications. Its flexibility and photo-realistic image quality make ray tracing a preferred algorithm for solving problems such as the global illumination problem. Its suitability for real-time rendering has been demonstrated in recent years. Performance of modern ray tracers is competitive with rasterization for many scenarios and may be more robust and easier to use. With upcoming fully programmable graphics architectures, the remaining advantages of the classic rasterization-based rendering pipelines may diminish.
One issue with ray tracing is, however, that optimal performance can only be achieved when the entire scene fits into device memory. Most interactive ray tracing implementations make generous use of memory because this approach yields high frame rates. This is a problem for practical applications, no more so than on graphics boards with fast but limited memory.
The reluctance to use data compaction for fast ray tracing is attributable to the performance impact of most compression algorithms and the lack of support for random access. Sequential decompression of the entire data set before rendering may not be an option. Recently developed algorithms make a step in the right direction, but they either achieve only moderate compression rates or they require blockwise decompression of the data structures with caching. Both limitations are problematic for real-time ray tracing of very large models on devices with limited memory.